<--- %%NOBANNER%% --> delindex.sas
 BackForward

/*-------------------<---Start of Description-->---------------------\
| NAME: delindex;                                                    |
| PURPOSE: drop an existing index from a dataset or a table;         |
|---------------------<---End of Description-->----------------------|
|--------------------------------------------------------------------|
|------------<---Start of Files or Arguments Needed-->---------------|
| Usage: libname: libref;                                            |
| indata: dataset name;                                              |
| ndx: index variables                                               |
|-------------<---End of Files or Arguments Needed-->----------------|
|--------------------------------------------------------------------|
|------------------<---Start of Files Created-->---------------------|
| Example: %delndx(sasuser,class,rse)                                |
| Usage: %delindex(libname=,indata=,index=, outdata=&indata);        |
\-------------------<---End of Files Created-->---------------------*/
%macro delindex(libname=,indata=,index=, outdata=&indata);
/*--------------------------------------------\
| Author:  Duo Zhou;                          |
| Created: 8-27-2001 10:58pm;                 |
| Purpose: Delete the index for the dataset;  |
\--------------------------------------------*/
  %*-- check if index exists;
  %let libname=%upcase(&libname);
 %let indata=%upcase(&indata);
 %let index=%upcase(&index);
 %if &outdata eq %then %do;
    %let outdata=&indata;
 %end;
 %*-- Check if index exists;
 %let ixnames=;
 proc sql noprint;
   select distinct indxname into :ixnames separated by " "
   from dictionary.indexes
   where libname="&libname" and memname="&indata";
   quit;
   %put ........... Existing indexes are:       &ixnames;
   %put ........... Name of index to drop is: &index;
%if %index(&ixnames, &index)=0 %then %do;
   %put **************** index: &index does not exist;
%end;
%else %do;
   proc sql noprint;
     drop index &index from &libname..&outdata;
     %put ................. index : &index dropped from table &libname..&indata;
   quit;
%end;
%mend delindex;